-- Genera Alta
GO
create procedure TEQUILASO.sp_altaRol

 @Nombre VARCHAR(255),
 @Id_funcionalidad int,
 @Habilitado bit
AS
	DECLARE @id_rol INT
BEGIN
	
	Select @id_rol = (select id from TEQUILASO.ROL where Nombre = @Nombre)
	IF(@id_rol IS NOT NULL)
	BEGIN
		set @id_rol=0;
		RETURN 'El rol ya existe en la base';
	END
	ELSE BEGIN	
			insert into TEQUILASO.ROL (NOMBRE,HABILITADO) VALUES (@Nombre,@Habilitado) SET @id_rol = SCOPE_IDENTITY();
			insert into TEQUILASO.ROL_FUNCIONALIDAD (ID_ROL,ID_FUNCIONALIDAD) values (@id_rol,@Id_funcionalidad);
			RETURN @id_rol;
	END	
END
GO

-- Agrega
GO
create procedure TEQUILASO.sp_agregarFuncionalidad
 @Id_rol int,
 @Id_funcionalidad int
AS
	DECLARE @id INT
BEGIN
	
	Select @id = (select id_rol from TEQUILASO.ROL_FUNCIONALIDAD where ID_ROL = @Id_rol AND ID_FUNCIONALIDAD = @Id_funcionalidad)
	IF(@id IS NOT NULL)
	BEGIN
		RETURN 'Ya existe esa funcionalidad para el rol.';
	END
	ELSE BEGIN	
			insert into TEQUILASO.ROL_FUNCIONALIDAD (ID_ROL,ID_FUNCIONALIDAD) values (@Id_rol,@Id_funcionalidad);
			RETURN @id_rol;
	END	
END
GO

-- Elimina Funcionalidad
GO
create procedure TEQUILASO.sp_eliminarFuncionalidad
 @Id_rol int,
 @Id_funcionalidad int
AS
	DECLARE @id INT
BEGIN
	
	Select @id = (select id_rol from TEQUILASO.ROL_FUNCIONALIDAD where ID_ROL = @Id_rol AND ID_FUNCIONALIDAD = @Id_funcionalidad)
	IF(@id IS NULL)
	BEGIN
		RETURN 'No existe esa funcionalidad para el rol.';
	END
	ELSE BEGIN	
			DELETE FROM TEQUILASO.ROL_FUNCIONALIDAD WHERE ID_ROL = @Id_rol AND ID_FUNCIONALIDAD = @Id_funcionalidad;
	END	
END
GO

-- Elimina Rol Logica
GO
create procedure TEQUILASO.sp_deshabilitarRol

 @Id_rol int,
 @Habilitado bit
AS
	DECLARE @id INT
BEGIN
	
	Select @id = (select id from TEQUILASO.ROL where id = @Id_rol)
	IF(@id IS NULL)
	BEGIN
		RETURN 'El rol no existe en la base';
	END
	ELSE BEGIN	
			UPDATE TEQUILASO.ROL SET HABILITADO = @Habilitado WHERE id=@Id_rol SET @id = SCOPE_IDENTITY();
			IF(@id IS NOT NULL)
			BEGIN
				DELETE FROM TEQUILASO.USUARIO_ROL WHERE ID_ROL = @id;
			END
			DELETE FROM TEQUILASO.ROL_FUNCIONALIDAD WHERE ID_ROL = @Id_rol;
	END	
END
GO

-- Alta Rol Logica
GO
create procedure TEQUILASO.sp_habilitarRol

 @Id_rol int,
 @Habilitado bit
AS
	DECLARE @id INT
BEGIN
	
	Select @id = (select id from TEQUILASO.ROL where id = @Id_rol)
	IF(@id IS NULL)
	BEGIN
		RETURN 'El rol no existe en la base';
	END
	ELSE BEGIN	
			UPDATE TEQUILASO.ROL SET HABILITADO = @Habilitado WHERE id=@Id_rol;
	END	
END
GO

-- Cambio Nombre Rol
GO
create procedure TEQUILASO.sp_cambiarNombreRol

 @Id_rol int,
 @Nombre varchar(255)
AS
	DECLARE @id INT
BEGIN
	
	Select @id = (select id from TEQUILASO.ROL where id = @Id_rol)
	IF(@id IS NULL)
	BEGIN
		RETURN 'El rol no existe en la base';
	END
	ELSE BEGIN	
			UPDATE TEQUILASO.ROL SET Nombre = @Nombre WHERE id=@Id_rol;
	END	
END
GO